package 简单.字符串;

/**
 * 给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回
 * 字符串中最后一个单词的长度。
 * <p>
 * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
 * <p>
 * 来源：https://leetcode-cn.com/problems/length-of-last-word/
 */
public class 最后一个单词的长度_58 {

    public static void main(String[] args) {

        System.out.println(efficientLengthOfLastWord("a"));

    }

    //使用split函数用空格分割，不推荐
    public int lengthOfLastWord(String s) {
        String[] split = s.trim().split("\\s+");
        return split[split.length - 1].length();
    }

    //从左往右遍历，找到最后一个空格
    public static int lengthOfLastWord2(String s) {
        String trim = s.trim();
        int last = 0;
        for (int i = 0; i < trim.length(); i++) {
            if (trim.charAt(i) == ' ') {
                last = i;
            }
        }
        return last == 0 ? trim.length() : trim.length() - 1 - last;
    }

    //从右往左遍历，找到第一个空格停止循环
    public static int efficientLengthOfLastWord(String s) {
        String trim = s.trim();
        for (int i = trim.length() - 1; i >= 0; i--) {
            if (trim.charAt(i) == ' ') {
                return trim.length() - 1 - i;
            }
        }
        return trim.length();
    }
}
